package com.imooc.utils;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 *
 * </p>
 *
 * @author gzj
 * @since 2023/11/22
 */
public class ListUtils {
    /**
     * 分割List集合 将一个大的List集合分割成多个小的List集合
     *
     * @param <T> 指定List的数据类型
     * @param oldList 原始集合
     * @param batchSize 设置每个小集合的长度
     * @return 分割后的指定数据类型的数据集合,每个元素都是分割后的List集合
     */
    public static <T> List<List<T>> splitList(List<T> oldList, int batchSize) {
        if (batchSize < 1) {
            return null;
        }
        List<List<T>> result = new ArrayList<>();
        int size = oldList.size();
        int count = (size + batchSize - 1) / batchSize;
        for (int i = 0; i < count; i++) {
            int fromIndex = i * batchSize;
            int toIndex = Math.min((i + 1) * batchSize, size);
            List<T> subList = oldList.subList(fromIndex, toIndex);
            result.add(subList);
        }
        return result;
    }
}
